package juego;

import homes.SessionManager;
import juego.unidades.Persona;
import servicios.Actualizar;
import servicios.Borrar;
import servicios.GuardarEdificio;
import servicios.GuardarUnidad;
import servicios.LogIn;
import servicios.Registrar;
import excepcionesDelJuego.PasswordIncorrectaException;

public class Juego {

	private Usuario usuario;
	
	public void registrar(String userName,String pass){
	           SessionManager.execute(new Registrar(userName, pass));
	}
	
	public void borrar(){
		SessionManager.execute(new Borrar(this.usuario));
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public void agregarUnidad(Persona p){
		SessionManager.execute(new GuardarUnidad(this,p));
		this.getUsuario().agregarUnidad(p);
	}
	
	public void agregarEdificio(Edificio e){
		SessionManager.execute(new GuardarEdificio(this,e));
		this.getUsuario().agregarEdificio(e);
	}
	
	public void actualizarPass(String passActual, String nuevaPass){
		if(usuario.getPass().equals(passActual)){
			this.getUsuario().setPass(passActual);
			SessionManager.execute(new Actualizar(this.getUsuario()));
		}else{
			throw new PasswordIncorrectaException();
		}
	}
	
	public void logIn(String usr, String pass){
		this.usuario=(Usuario)SessionManager.execute(new LogIn(usr, pass));
		this.getUsuario().setLogIn(true);
		SessionManager.execute(new Actualizar(this.getUsuario()));
	}
	
	public void logOut(){
		this.getUsuario().setLogIn(new Boolean(false));
		SessionManager.execute(new Actualizar(this.getUsuario()));
		this.setUsuario(null);
	}
}
